10 REM ******************************** 15 REM * ADVENTURE WRITING ON THE C64 * 20 REM * * 25 REM * WRITTEN BY JASON FINCH * 30 REM * (C) CDU 1990 * 35 REM ******************************** 40 : 45 POKE53280,14:POKE53281,6:PRINT"[147][142] PLEASE INSERT DISK THAT CAN" 50 PRINT" BE FORMATTED (DEVICE EIGHT)" 55 PRINT,"[157][157]AND THEN PRESS 'RETURN'":POKE198,0 60 GETA$:IFA$<>CHR$(13)THEN60 65 PRINT"[145] ARE YOU SURE ABOUT THAT??? [Y/N]":POKE198,0 70 GETA$:IFA$="N"THEN45 75 IFA$<>"Y"THEN70 80 : 85 REM ****************************** 90 REM * DISPLAY INTRODUCTORY INFO. * 95 REM ****************************** 100 : 105 RESTORE:PRINT"[147]THE FOLLOWING DESCRIPTIONS WILL NOW BE" 110 PRINT"SAVED, FIRST TO INDIVIDUAL SECTORS WHICH"; 115 PRINT"WILL BE ALLOCATED AS USED AND THEN AS" 120 PRINT"SEPARATE SEQUENTIAL FILES:" 125 FORI=1TO5:READD$(I):PRINTD$(I)"":NEXT 130 PRINT"PLEASE WAIT: FORMATTING THE DISK..." 135 : 140 REM ******************************* 145 REM * FORMAT DISK & CHECK ERRORS * 150 REM ******************************* 155 : 160 OPEN15,8,15,"N0:AW-STORAGE DEMO,AW":GOSUB655:CLOSE15:IFETHEN660 165 PRINT"[147]OK. SAVING DESCRIPTIONS TO SECTORS ZERO THRO' FOUR ON TRACK ONE:" 170 : 175 REM ******************************* 180 REM * OPEN CHANNELS TO DISK DRIVE * 185 REM * AND SET WRITE TRACK AND * 190 REM * SECTOR TO ONE * 195 REM ******************************* 200 : 205 OPEN15,8,15:OPEN8,8,8,"#":TR=1:SR=0 210 : 215 REM ******************************* 220 REM * SEND INFORMATION TO BUFFER * 225 REM ******************************* 230 : 235 FORS=1TO5:D$=D$(S):PRINTD$"":PRINT#15,"B-P 8 0" 240 FORL=1TOLEN(D$):PRINT#8,MID$(D$,L,1);:NEXT:PRINT#8,CHR$(0); 245 PRINT#15,"B-A 0";TR;SR:T(S)=TR:S(S)=SR:REM *** CHECK BLOCK ALLOCATION 250 : 255 REM ******************************* 260 REM * CHECK ERROR/BLOCK AVAIL'BTY * 265 REM ******************************* 270 GOSUB655:IFE=0THEN340 275 IFE=66THENTR=TR+1:SR=0:GOTO245 280 IFE<>65THENCLOSE8:CLOSE15:GOTO660:REM *** SOME OTHER DISK ERROR 285 IFB=0THENCLOSE8:CLOSE15:PRINT"DISK FULL":END:REM *** ALL BLOCKS USED 290 : 295 REM ******************************* 300 REM * CHOSEN BLOCK WAS ALREADY * 305 REM * USED. VARIABLES B/C FROM * 310 REM * ERROR CHECKING HOLD NEXT * 315 REM * FREE SECTOR LOCATION INFO. * 320 REM * SO SET NEW TR/SR AND RE-TRY * 325 REM ******************************* 330 : 335 TR=B:SR=C:GOTO245 340 PRINT#15,"U2 8 0";TR;SR: REM *** WRITE SECTOR INFORMATION 345 : 350 REM ******************************* 355 REM * INCREMENT SECTOR POINTER * 360 REM * THEN REPEAT FOR FIVE LOC'NS * 365 REM ******************************* 370 : 375 SR=SR+1:NEXT:CLOSE8:CLOSE15 380 : 385 REM ******************************* 390 REM * ALL STORED: DO AS SEQ.FILES * 395 REM ******************************* 400 : 405 PRINT"[147]OK. SAVING AS SEPARATE SEQUENTIAL FILES CALLED LOC1,LOC2,...,LOC5:" 410 FORS=1TO5:D$=D$(S):PRINTD$"" 415 OPEN2,8,1,"@0:LOC"+MID$(STR$(S),2)+",S,W":REM *** OPEN SEQUENTIAL FILE 420 FORL=1TOLEN(D$):PRINT#2,MID$(D$,L,1);:NEXT:REM *** SEND INFORMATION 425 PRINT#2,CHR$(0);:CLOSE2:NEXT 430 : 435 REM ******************************* 440 REM * ALL STORED: DO AS SEQ.FILES * 445 REM ******************************* 450 : 455 PRINT"[147]OK - ALL SAVED. NOW PRESS A NUMERIC" 460 PRINT"KEY FROM ONE TO FIVE. THAT DESCRIPTION" 465 PRINT"WILL THEN BE RETRIEVED FIRST FROM THE" 470 PRINT"INDIVIDUAL SECTOR AND THEN FROM ITS SEQUENTIAL FILE...":POKE198,0 475 GETK$:IFK$<"1"ORK$>"5"THEN475 480 : 485 REM ******************************* 490 REM * OPEN CHANNELS FOR DIRECT * 495 REM * ACCESS COMMANDS AND CHECK * 500 REM * FOR DISK ERRORS * 505 REM ******************************* 510 : 515 K=VAL(K$):OPEN15,8,15:OPEN8,8,8,"#":GOSUB655:IFETHENCLOSE8:CLOSE15:GOTO660 520 PRINT#15,"U1 8 0";T(K);S(K):REM *** READ TRACK/SECTOR TO BUFFER 525 GET#8,A$:IFA$=""THEN535 530 PRINTA$;:GOTO525:REM *** LOOP BACK FOR MORE 535 CLOSE8:CLOSE15:PRINT"" 540 : 545 REM ******************************* 550 REM * HAVE READ DIRECT-NOW SEQ'TL * 555 REM ******************************* 560 : 565 OPEN2,8,0,"LOC"+MID$(STR$(K),2)+",S,R":REM *** OPEN SEQUENTIAL FILE 570 GET#2,A$:IFA$=""THEN615 575 PRINTA$;:GOTO570:REM *** LOOP BACK FOR MORE 580 : 585 REM ******************************* 590 REM * BOTH FORMS HAVE BEEN * 595 REM * RECALLED. WAIT FOR KEYPRESS * 600 REM * TO RETURN AND REPEAT. * 605 REM ******************************* 610 : 615 CLOSE2:PRINT:PRINT"PRESS ANY KEY FOR ANOTHER..." 620 POKE198,0:WAIT198,1:POKE198,0:PRINT"[147]FOR ANOTHER DESCRIPTION PRESS A NUMERIC" 625 GOTO460:REM *** GO BACK AND WAIT FOR ANOTHER KEYPRESS 630 : 635 REM ******************************* 640 REM * READ DISK ERROR CHANNEL * 645 REM ******************************* 650 : 655 INPUT#15,E,A$,B,C:RETURN 660 PRINT"[147]  DISK ERROR! [146]",,," "A$" @"B"[157],"C:PRINT" PRESS A KEY":POKE198,0 665 WAIT198,1:POKE198,0:GOTO45 670 : 675 REM ******************************* 680 REM * DATA STATEMENTS FOR SIMPLE * 685 REM * DESCRIPTION INFORMATION * 690 REM ******************************* 695 : 700 DATA"YOU ARE STANDING ON A STONY PATH THAT RUNS UP THE SIDE OF THE HILL." 705 DATA"INSIDE THE SMALL CABIN YOU NOTICE A CHEST ON THE EASTERN WALL." 710 DATA"YOU ARE ON A MUDDY PATH LEADING DOWN TO A FAST FLOWING RIVER." 715 DATA"THE FOREST HAS BECOME MUCH MORE DENSE ONTHIS SIDE OF THE RIVER." 720 DATA"YOU ARE STANDING IN THE MIDDLE OF A LARGE CLEARING IN THE WOODS."